// 引入动态路由
import { asyncRoutes, constantRoutes } from '@/router'
const state = {
  // 定义一个用来存放路由的数组
  routes: []
}
const mutations = {
  setRoutes(state, data) {
    // 除了添加筛选过后的动态路由，静态路由也是需要重新加载进路由去渲染
    state.routes = [...constantRoutes, ...data]
  }
}
const actions = {
  filterRouter(store, menus) {
    // 在router下的index文件中，asyncRoutes是一个包含着所有动态路由的数组
    // 每个动态路由都有一个name，而我们可以通过个人数据中的menus，也就是用户所拥有的权限，来进行路由筛选
    // 在动态路由的数组中过滤出 包含在 menus中的路由名字（route.name） ，如果有就过滤出来
    const res = asyncRoutes.filter(route => menus.includes(route.name))
    // 调用mutations里面的设置路由方法，存放筛选过的路由
    store.commit('setRoutes', res)
    // 返回路由数据，用来重新配置动态路由
    return res
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
